Node.js MySQL Where

Node.js ஐப் பயன்படுத்தி MySQL வினாக்களில் WHERE கூற்றுடன் தரவை வடிகட்ட கற்றுக்கொள்ளுங்கள்

வடிகட்டியுடன் தேர்ந்தெடுத்தல்

ஒரு அட்டவணையில் இருந்து பதிவுகளைத் தேர்ந்தெடுக்கும் போது, "WHERE" கூற்றைப் பயன்படுத்தி தேர்வை வடிகட்டலாம்:

எடுத்துக்காட்டு

"Park Lane 38" என்ற முகவரியுடன் பதிவு(களை)த் தேர்ந்தெடுக்கவும்:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

மேலே உள்ள குறியீட்டை "demo_db_where.js" என்ற கோப்பில் சேமித்து கோப்பை இயக்கவும்:

C:\Users\Your Name>node demo_db_where.js

இது உங்களுக்கு இந்த முடிவைக் கொடுக்கும்:

[
  { id: 11, name: 'Ben', address: 'Park Lane 38'}
]

💡 WHERE கூற்றின் முக்கிய குறிப்புகள்:

  • சமத்துவ சோதனை: = ஆபரேட்டர் சரியான பொருத்தத்திற்குப் பயன்படுத்தப்படுகிறது
  • சரம் மதிப்புகள்: சரம் மதிப்புகள் ஒற்றை மேற்கோள்களில் இருக்க வேண்டும்
  • ஒற்றை முடிவு: WHERE கூற்று ஒன்று அல்லது அதற்கு மேற்பட்ட பதிவுகளைத் திருப்பித் தரும்
  • தரவு வகைகள்: எண்கள் மேற்கோள்கள் இல்லாமல் பயன்படுத்தப்படலாம்

வைல்ட்கார்ட் எழுத்துகள்

கொடுக்கப்பட்ட எழுத்து அல்லது சொற்றொடரில் தொடங்கும், உள்ளடக்கிய அல்லது முடிவடையும் பதிவுகளையும் நீங்கள் தேர்ந்தெடுக்கலாம்.

பூஜ்ஜியம், ஒன்று அல்லது பல எழுத்துகளைக் குறிக்க '%' வைல்ட்கார்டைப் பயன்படுத்தவும்:

எடுத்துக்காட்டு

'S' என்ற எழுத்தில் தொடங்கும் முகவரியுடன் பதிவுகளைத் தேர்ந்தெடுக்கவும்:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address LIKE 'S%'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

மேலே உள்ள குறியீட்டை "demo_db_where_s.js" என்ற கோப்பில் சேமித்து கோப்பை இயக்கவும்:

C:\Users\Your Name>node demo_db_where_s.js

இது உங்களுக்கு இந்த முடிவைக் கொடுக்கும்:

[
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]

தொடங்குவது

'S%' - 'S' இல் தொடங்கும் மதிப்புகள்

முடிவடைவது

'%S' - 'S' இல் முடிவடையும் மதிப்புகள்

உள்ளடக்கம்

'%S%' - எங்கேயும் 'S' ஐக் கொண்ட மதிப்புகள்

கூடுதல் LIKE ஆபரேட்டர் எடுத்துக்காட்டுகள்

// Address contains 'way'
con.query("SELECT * FROM customers WHERE address LIKE '%way%'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Name ends with 'y'
con.query("SELECT * FROM customers WHERE name LIKE '%y'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Name has exactly 3 characters
con.query("SELECT * FROM customers WHERE name LIKE '___'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

வினா மதிப்புகளைத் தப்பிக்கச் செய்தல்

வினா மதிப்புகள் பயனரால் வழங்கப்பட்ட மாறிகள் ஆகும் போது, நீங்கள் மதிப்புகளைத் தப்பிக்கச் செய்ய வேண்டும்.

இது SQL injections தடுக்க, இது உங்கள் தரவுத்தளத்தை அழிக்க அல்லது தவறாகப் பயன்படுத்தும் ஒரு பொதுவான வெப் ஹேக்கிங் நுட்பமாகும்.

MySQL தொகுதியில் வினா மதிப்புகளைத் தப்பிக்கச் செய்யும் முறைகள் உள்ளன:

எடுத்துக்காட்டு

mysql.escape() முறையைப் பயன்படுத்தி வினா மதிப்புகளைத் தப்பிக்கச் செய்யவும்:

let adr = 'Mountain 21';
let sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log(result);
});

நீங்கள் தப்பிக்கச் செய்ய விரும்பும் மதிப்புகளுக்கான ஒரு இடம் கொள்ளும் என ? ஐப் பயன்படுத்தலாம்.

இந்த வழக்கில், query() முறையில் இரண்டாவது அளவுருவாக மாறி அனுப்பப்படுகிறது:

எடுத்துக்காட்டு

இடம் கொள்ளும் ? முறையைப் பயன்படுத்தி வினா மதிப்புகளைத் தப்பிக்கச் செய்யவும்:

let adr = 'Mountain 21';
let sql = 'SELECT * FROM customers WHERE address = ?';
con.query(sql, [adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

உங்களிடம் பல இடம் கொள்ளும் இருந்தால், வரிசையில் பல மதிப்புகள் உள்ளன, அந்த வரிசையில்:

எடுத்துக்காட்டு

பல இடம் கொள்ளும்:

let name = 'Amy';
let adr = 'Mountain 21';
let sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

⚠️ பாதுகாப்பு எச்சரிக்கை:

  • SQL Injection: பயனர் உள்ளீட்டை எப்போதும் தப்பிக்கச் செய்யவும்
  • மேற்கோள்கள்: mysql.escape() சரங்களுக்கான மேற்கோள்களைத் தானாகச் சேர்க்கிறது
  • இடம் கொள்ளும்: பல மதிப்புகளுக்கு பரிந்துரைக்கப்படும் முறை
  • தரவு சுத்திகரிப்பு: பயனர் உள்ளீட்டை எப்போதும் சரிபார்க்கவும்

கூடுதல் WHERE ஆபரேட்டர்கள்

ஒப்பீட்டு ஆபரேட்டர்கள்

// Greater than
con.query("SELECT * FROM customers WHERE id > 5", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Less than or equal
con.query("SELECT * FROM customers WHERE id <= 10", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Not equal
con.query("SELECT * FROM customers WHERE name != 'John'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Between
con.query("SELECT * FROM customers WHERE id BETWEEN 5 AND 10", function (err, result) {
  if (err) throw err;
  console.log(result);
});

தருக்க ஆபரேட்டர்கள்

// AND operator
con.query("SELECT * FROM customers WHERE name = 'John' AND address = 'Highway 71'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// OR operator
con.query("SELECT * FROM customers WHERE name = 'John' OR name = 'Amy'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// NOT operator
con.query("SELECT * FROM customers WHERE NOT name = 'John'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Combined conditions
con.query("SELECT * FROM customers WHERE (name = 'John' OR name = 'Amy') AND id > 5", function (err, result) {
  if (err) throw err;
  console.log(result);
});

IN ஆபரேட்டர்

// IN operator with multiple values
con.query("SELECT * FROM customers WHERE name IN ('John', 'Amy', 'Hannah')", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// NOT IN operator
con.query("SELECT * FROM customers WHERE name NOT IN ('John', 'Amy')", function (err, result) {
  if (err) throw err;
  console.log(result);
});

WHERE கூற்றுகளுக்கான சிறந்த நடைமுறைகள்

பாதுகாப்பு

  • SQL injection தடுக்க எப்போதும் இடம் கொள்ளும் பயன்படுத்தவும்
  • பயனர் உள்ளீட்டை எப்போதும் சரிபார்க்கவும் மற்றும் சுத்திகரிக்கவும்
  • நேரடி சரம் இணைப்புகளைத் தவிர்க்கவும்
  • பிழை செய்திகளை வெளிப்படையாகக் காட்ட வேண்டாம்

செயல்திறன்

  • தேவையான நெடுவரிசைகளை மட்டும் தேர்ந்தெடுக்கவும்
  • செயல்திறனுக்கான குறியீட்டு நெடுவரிசைகளைப் பயன்படுத்தவும்
  • சிக்கலான வினாக்களுக்கு WHERE கூற்றுகளை எளிதாக்கவும்
  • LIKE வினாக்களில் ஆரம்பத்தில் வைல்ட்கார்ட்களைத் தவிர்க்கவும்

குறியீடு தரம்

  • மறுபயன்பாட்டிற்காக WHERE கூற்றுகளைக் காப்பாற்றவும்
  • சரியான பிழை கையாளுதலையும் கண்காணிப்பையும் பயன்படுத்தவும்
  • வாசிப்புக்காக வினாக்களை வடிவமைக்கவும்
  • நிலையான குறியீட்டு மரபுகளைப் பின்பற்றவும்

முழுமையான எடுத்துக்காட்டு

அனைத்து WHERE கூற்று நுட்பங்களையும் உள்ளடக்கிய முழுமையான எடுத்துக்காட்டு:

const mysql = require('mysql');

// Create connection
const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database: "company_db"
});

// Connect to MySQL
con.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err.message);
    return;
  }
  
  console.log('Connected to MySQL database');
  
  // Example 1: Basic WHERE with exact match
  console.log('\n1. Customers with specific address:');
  const address = 'Park Lane 38';
  con.query("SELECT * FROM customers WHERE address = ?", [address], (err, result) => {
    if (err) {
      console.error('Error in query 1:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 2: WHERE with LIKE and wildcard
  console.log('\n2. Customers with address starting with S:');
  con.query("SELECT * FROM customers WHERE address LIKE 'S%'", (err, result) => {
    if (err) {
      console.error('Error in query 2:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 3: WHERE with multiple conditions
  console.log('\n3. Customers with complex conditions:');
  const minId = 5;
  const maxId = 10;
  const namePattern = '%y%';
  
  con.query(
    "SELECT * FROM customers WHERE id BETWEEN ? AND ? AND name LIKE ?",
    [minId, maxId, namePattern],
    (err, result) => {
      if (err) {
        console.error('Error in query 3:', err.message);
        return;
      }
      console.log(result);
    }
  );
  
  // Example 4: WHERE with IN operator
  console.log('\n4. Customers with specific names:');
  const names = ['John', 'Amy', 'Hannah'];
  con.query("SELECT * FROM customers WHERE name IN (?, ?, ?)", names, (err, result) => {
    if (err) {
      console.error('Error in query 4:', err.message);
      return;
    }
    console.log(result);
    
    // Close connection after all queries
    setTimeout(() => {
      con.end((err) => {
        if (err) {
          console.error('Error closing connection:', err.message);
          return;
        }
        console.log('\nConnection closed');
      });
    }, 1000);
  });
});

பயிற்சி

MySQL வினாவில் பதிவுகளை வடிகட்ட பயன்படுத்தப்படும் சரியான SQL கூற்றைத் தேர்ந்தெடுக்கவும்.

FILTER BY
✗ தவறு! "FILTER BY" என்பது MySQL இல் ஒரு செல்லுபடியாகும் SQL கூற்று அல்ல
CONDITION
✗ தவறு! "CONDITION" என்பது MySQL இல் ஒரு செல்லுபடியாகும் SQL கூற்று அல்ல
WHERE
✓ சரி! "WHERE" என்பது MySQL வினாவில் பதிவுகளை வடிகட்ட பயன்படும் சரியான SQL கூற்றாகும்
IF
✗ தவறு! "IF" என்பது MySQL இல் ஒரு செல்லுபடியாகும் SQL கூற்று அல்ல